<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        'use strict';
        /*
            面向对象: 概念

            封装 | 继承 | 多态
            
            封装: 总结特征, 特征的集合
            继承: 把特征分类, 分出层级关系
            多态: 同样的函数, 不同的实现

            虚拟中: 
            人: 吃,睡,名字
            
            男人,女人

            男人: 建筑工人,  喜欢黑色, 喜欢车, 机甲
            女人: 老师
            老师: 班主任, 美术老师

            总结特征: 归类

            人: {
                吃,
                睡,
                名字
            }

            卡车司机: 继承 人{
                休息: 
                    1. 车开到停车场
                    2. 找旅馆
            }

            学生: 继承 人{
                休息: 
                    1. 判断: 不是上课时间
                    2. 直接休息
            }
        */

        // 人
        let person = {
            name: '石兴龙',
            eat: function() {
                console.log(`${this.name} : 正在吃饭...`)
            },
            sleep: function() {
                console.log(`${this.name} : 正在睡觉...`)
            },
        }
        // 学生
        let student = {
            techer: '张三',
            status: '正在上课',
            sleep: function() {
                console.log('学生机休息')
                if (this.status === '正在上课') {
                    console.log("睡觉失败, 正在上课...")
                } else {
                    console.log("睡觉成功!")
                }
            }
        }

        let truck = {
            card: 'c1',
            name: '石兴龙: 卡车司机',
            sleep: function() {
                console.log('卡车司机休息')
                console.log('1. 把车开到停车场')
                console.log('2. 找到酒店')
                console.log('3. 睡觉')
            }
        }

        student.__proto__ = person
        truck.__proto__ = person

        truck.sleep()
        student.sleep()

        console.log(
            person,
            student
        )

        console.log(
            student.name
        )
        console.log(
            truck.name
        )

    </script>
</body>
</html>